package com.newtouch.bxzs.policy.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.newtouch.bxzs.policy.model.bo.*;
import com.newtouch.bxzs.policy.model.vo.*;

import java.util.List;


/**
 * 保单管理service层
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/7 13:31</td>
 * <td>linhongxi</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author linhongxi
 * @version 1.0.0
 * @since 1.0.0
 */
public interface PolicyService {

    /**
     * 根据查询条件获取个人保单列表
     *
     * @param policyVO  个人保单列表查询条件
     *
     * @return   个人保单列表
     */
    IPage<PolicyListBO> getIndividualPolicyList(PolicyVO policyVO);
    /**
     * 根据保单号获取个人保单详情
     *
     * @param policyInfoVO 个人保单详情查询条件
     *
     * @return 个人保单详情
     */
    PolicyBO getIndividualPolicyInfo(PolicyInfoVO policyInfoVO);
    /**
     * 根据保单号获取保全列表
     *
     * @param policyInfoPageVO 个人保单详情--保全列表查询条件
     *
     * @return 个人保单详情--保全列表
     */
    List<PreservationBO> getPolicyPreservation(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据保单号获取理赔列表
     *
     * @param policyInfoPageVO 个人保单详情--理赔列表查询条件
     *
     * @return 个人保单详情--理赔列表
     */
    List<ClaimsBO> getPolicyClaims(PolicyInfoPageVO policyInfoPageVO);

    /**
     * 根据查询条件获取新契约进度列表
     *
     * @param policyNewContractVO 个人保单新契约进度列表查询条件
     *
     * @return 个人保单新契约进度列表
     */
    List<PolicyNewContractListBO> getPolicyNewContractList(PolicyNewContractVO policyNewContractVO);

    /**
     * 根据保单号获取新契约进度详情
     *
     * @param policyNewContractInfoVO 个人保单新契约进度详情查询条件
     *
     * @return 个人保单新契约进度详情
     */
    PolicyNewContractInfoBO getPolicyNewContractInfo(PolicyNewContractInfoVO policyNewContractInfoVO);

    /**
     * 根据查询条件获取保全进度列表
     *
     * @param preservationVO 个人保单保全进度列表查询条件
     *
     * @return 个人保单保全进度列表
     */
    List<PreservationProgressListBO> getPreservationProgressList(PreservationVO preservationVO);
    /**
     * 根据保单号获取保全进度详情
     *
     * @param preservationProgressInfoVO 个人保单保全进度详情查询条件
     *
     * @return 个人保单保全进度详情
     */
    PreservationProgressInfoBO getPreservationProgressInfo(PreservationProgressInfoVO preservationProgressInfoVO);

    /**
     * 根据查询条件获取理赔进度列表
     *
     * @param claimsVO 个人保单理赔进度列表查询条件
     *
     * @return 个人保单理赔进度列表
     */
    List<ClaimsProgressListBO> getClaimsProgressList(ClaimsVO claimsVO);

    /**
     * 根据查询条件获取满期保单列表
     *
     * @param expirationPolicyVO 个人保单满期列表查询条件
     *
     * @return 个人保单满期列表
     */
    List<ExpirationPolicyBO> getExpirationPolicyList(ExpirationPolicyVO expirationPolicyVO);

    /**
     * 根据查询条件获取续期保单列表
     *
     * @param renewalPolicyVO 个人保单续期列表查询条件
     *
     * @return 个人保单续期列表
     */
    List<RenewalPolicyListBO> getRenewalPolicyList(RenewalPolicyVO renewalPolicyVO);

}
